  package jumavidesktop;

import java.io.File;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import jumavidesktop.Auxiliar.CargaDatos.CargaDatosPrueba;
import jumavidesktop.Auxiliar.CargaDatos.CrearBBDD;
import jumavidesktop.Auxiliar.CargaDatos.LimpiaDatosBBDD;
import jumavidesktop.Auxiliar.CargaDatos.LimpiaYCarga;
import jumavidesktop.GUI.Configuracion;
import jumavidesktop.GUI.Principal.PrincipalMDI;
import jumavidesktop.GUI.mensajeModal.MensajeInfoError;
import jumavidesktop.Otros.Pojos.MyRespuesta;
import jumavidesktop.Otros.Pojos.parConfig;
import jumavidesktop.Otros.auxiliares.AuxConex;

/**
 * Clase encargada de cargar la app
 *
 * @author vimso
 */
public class CargandoAPP implements ArrancaMDI{
    
    public static void main(String[] args) {
        //Depnediendo del acceso se ejecuta una cosa  otra
        String orden="";
        
        if (args.length>0) {
            orden=args[0];
        }
        
        if (orden.equalsIgnoreCase("Limpia")) {
            LimpiaDatosBBDD.main(args);
            System.out.println("Limpiando");
            System.exit(0);
        } else if(orden.equals("LimpiaCarga")) {
            System.out.println("LimpiandoYCargando");
            LimpiaYCarga.main(args);
            System.exit(0);
        } else if(orden.equals("Carga")) {
            System.out.println("Cargando");
            CargaDatosPrueba.main(args);
            System.exit(0);
        } else if(orden.equals("CreaBD")) {
            System.out.println("CreaBBDD");
            CrearBBDD.main(args);
            System.exit(0);
        }else
        {
            arrancaAplicacionEstandar();
        }
    }
    
    
    private static void arrancaAplicacionEstandar()
    {
        
        //Cargo la configuración
        File fichero = new File(parConfig.cFichero);
        MyRespuesta respAux;
        parConfig parametrosConfig = new parConfig();
        
        CargandoAPP carga= new CargandoAPP();
        
        // si no existe saco un mantenimiento de la configuración
        if (!fichero.exists()) {
        
            Configuracion configView = new Configuracion();        //Abro la ventana de Configuración
            configView.setLocationRelativeTo(null);     //Lo centro en la pantalla
            configView.setVisible(Boolean.TRUE);
            configView.setArrancadora(carga);
            
            //Le doy un mensaje con el problema
            List<String> mensajes=new ArrayList<String>();            
            mensajes.add("Aún no se ha configurado la aplicación, configurela...");
            MensajeInfoError msg= new MensajeInfoError(configView,true,mensajes,MensajeInfoError.TipoMensaje.INFO,"Error de configuración");
            msg.setLocationRelativeTo(null);
            msg.setVisible(true);
            
        } else {
            
            parametrosConfig.cargarConfig();
            //Pruebo la conexion a la base de datos
            respAux = AuxConex.probarConexionBBDD(parametrosConfig);

            //Abro la aplicación o doy el mensaje de error
            if (respAux.getTodoOK()) {
                //Cargo la configuracion
                jumavidesktop.configuracion.Configuracion.getInstance().cargarConfiguracion(parametrosConfig);                
                carga.arrancaMDI();
            } else {
                MensajeInfoError msg= new MensajeInfoError(null, true, respAux.getMensajes(), MensajeInfoError.TipoMensaje.INFO, "");
                msg.setLocationRelativeTo(null);
                msg.setVisible(true);
                
                //abro el formulario de configuración
                Configuracion configView = new Configuracion();        //Abro la ventana de Configuración
                configView.setLocationRelativeTo(null);
                configView.setVisible(Boolean.TRUE);
                configView.setArrancadora(carga);
            }
        }
    }

    @Override
    public void arrancaMDI() {
                PrincipalMDI principalView = null;
        try {
            principalView = new PrincipalMDI();
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
                principalView.setVisible(Boolean.TRUE);   
    }
}
